﻿/*
 * Created by SharpDevelop.
 * User: CeCi
 * Date: 24/04/2014
 * Time: 06:23 p.m.
 * 
 * To change this template use Tools | Options | Coding | Edit Standard Headers.
 */
using System;
using System.Data;

namespace Gestión_UTN.blimpl
{
    /// <summary>
    /// Description of inscripcionblimpl.
    /// </summary>
    public class inscripcionblimpl : bl.inscripcionbl
    {
        private static da.inscripcionda createInscripcion = factories.dafactory.createInscripcion();
        private static bl.alumnobl createAlumno = factories.blfactory.createAlumno();
        private static bl.carrerabl createCarrera = factories.blfactory.createCarrera();

        public inscripcionblimpl()
        {
        }

        public bool SaveInscripcion(Gestión_UTN.bo.Inscripcionbo ins)
        {
            bool ingresada = false;

            try
            {
                ingresada = (null != ins)
                    ? createInscripcion.SaveInscripcion(ins.Fecha, ins.Alumno.Dni,
                                                        ins.Carrera.Car_id, ins.Titulo,
                                                        ins.Planilla, ins.Fotos, ins.CopiaDoc)
                    : false;

            }
            catch (exceptions.daexception ex)
            {
                ingresada = false;
                throw new exceptions.blexception(ex.Message);
            }
            catch (Exception ex)
            {
                ingresada = false;
                throw new exceptions.blexception(ex.Message);
            }

            return ingresada;
        }

        public bool DeleteInscripcion(DateTime fecha, int alu_dni)
        {
            bool eliminada = false;

            try
            {
                eliminada = (null != fecha && 0 != alu_dni)
                    ? createInscripcion.DeleteInscripcion(fecha, alu_dni)
                    : false;
            }
            catch (exceptions.daexception ex)
            {
                eliminada = false;
                throw new exceptions.blexception(ex.Message);
            }
            catch (Exception ex)
            {
                eliminada = false;
                throw new exceptions.blexception(ex.Message);
            }

            return eliminada;
        }

        public bool ModifyInscripcion(DateTime fecha_anterior, int alu_dni_anterior, Gestión_UTN.bo.Inscripcionbo ins)
        {
            bool modificada = false;

            try
            {
                modificada = (null != fecha_anterior && 0 != alu_dni_anterior && null != ins)
                    ? createInscripcion.ModifyInscripcion(fecha_anterior, alu_dni_anterior, ins.Fecha, ins.Alumno.Dni,
                                                          ins.Carrera.Car_id, ins.Titulo, ins.Planilla, ins.Fotos,
                                                          ins.CopiaDoc)
                    : false;
            }
            catch (exceptions.daexception ex)
            {
                modificada = false;
                throw new exceptions.blexception(ex.Message);
            }
            catch (Exception ex)
            {
                modificada = false;
                throw new exceptions.blexception(ex.Message);
            }

            return modificada;

        }

        public System.Data.DataTable FindAllInscripciones()
        {
            DataTable tablaInscripciones = null;

            try
            {
                tablaInscripciones = createInscripcion.FindAllInscripciones();
            }
            catch (exceptions.daexception ex)
            {
                tablaInscripciones = null;
                throw new exceptions.blexception(ex.Message);
            }
            catch (Exception ex)
            {
                tablaInscripciones = null;
                throw new exceptions.blexception(ex.Message);
            }

            return tablaInscripciones;
        }

        public Gestión_UTN.bo.Inscripcionbo FindInscripcionByDNI(int alu_dni)
        {
            bo.Inscripcionbo inscripcion = null;

            try
            {
                Entities.Inscripcion ins = (0 != alu_dni)
                    ? createInscripcion.FindInscripcionByDNI(alu_dni)
                    : null;

                bo.Alumnobo alu = (null != ins)
                    ? createAlumno.FindAlumnoByDNI(ins.Alu_dni)
                    : null;

                bo.Carrerabo car = (null != ins)
                    ? createCarrera.FindCarreraById(ins.Car_id)
                    : null;

                inscripcion = (null != car && null != alu)
                    ? new bo.Inscripcionbo(ins.Id, ins.Fecha, alu, car,
                                           ins.Titulo, ins.Planilla, ins.Fotos,
                                           ins.CopiaDoc)
                    : null;
            }
            catch (exceptions.daexception ex)
            {
                inscripcion = null;
                throw new exceptions.blexception(ex.Message);
            }
            catch (Exception ex)
            {
                inscripcion = null;
                throw new exceptions.blexception(ex.Message);
            }

            return inscripcion;
        }

        public Gestión_UTN.bo.Inscripcionbo FindInscripcionById(int id)
        {
            bo.Inscripcionbo inscripcion = null;

            try
            {
                Entities.Inscripcion ins = (0 != id)
                    ? createInscripcion.FindInscripcionById(id)
                    : null;

                bo.Alumnobo alu = (null != ins)
                    ? createAlumno.FindAlumnoByDNI(ins.Alu_dni)
                    : null;

                bo.Carrerabo car = (null != ins)
                    ? createCarrera.FindCarreraById(ins.Car_id)
                    : null;

                inscripcion = (null != car && null != alu)
                    ? new bo.Inscripcionbo(ins.Id, ins.Fecha, alu, car,
                                           ins.Titulo, ins.Planilla, ins.Fotos,
                                           ins.CopiaDoc)
                    : null;
            }
            catch (exceptions.daexception ex)
            {
                inscripcion = null;
                throw new exceptions.blexception(ex.Message);
            }
            catch (Exception ex)
            {
                inscripcion = null;
                throw new exceptions.blexception(ex.Message);
            }

            return inscripcion;
        }
    }
}
